In computer networks it is common for the processing of data packets to be distributed over multiple packet processors, which may themselves be distributed over different computer hardware or over different virtual servers.
Data packets from some data streams may be suitably processed by any available packet processor, whereas data packets from other data streams may need processing by one or more specified packet processors.
However, with distributed processing systems it is generally important that the processing load be appropriately distributed across all of the available processors to avoid processing delays and workload imbalances. Load balancing is often further complicated where processor affinity is desired.